1. Field of the Invention
The present invention relates to a method of clustering application servers, a method of forming a cache database cluster that caches data of database servers, and a Web system configured thereby.
2. Description of the Related Art
World Wide Web (abbreviated as Web below) system configuration has raised a significant challenge of improving scalability in terms of provision of adequate performance in the large-scale configuration and improvement of the operability enabling flexible response to abrupt changes in system load. Especially, in recent years, large-scale EC sites where many users demand near real-time system responses and portal sites that dynamically generate customized pages for each user are increasingly being constructed. These systems will increase in the number of accesses to their databases than conventional systems, so the improvement of scalability is increasingly becoming a significant challenge.
Most conventional Web systems have the three-level hierarchical structure shown in FIG. 3, which includes a plurality of Web servers 304 and 305, an application server 307, and a database server 309. An exemplary Web system service session requested from clients will be described with reference to FIG. 3. One of client computers (referred to as clients below) 301 and 302 issues a request to one of the Web servers 304 and 305 through a network 303. On reception of the request, the applicable Web server among the Web servers 304 to 305 transfers the request to the application server 307 through a network 306. The application server 307 executes an application for processing the request to generate a result of the processing, and returned the result to the applicable Web server. The applicable Web server produces a Web page into which the processing result received from the application server 307 is inserted, then returns the produced Web page to the applicable client, whereby one session is ended. If the application needs access to a database 311 in the database server 309, the application server 307 accesses the database server 309 through a network 308, and obtain or update data in the database 311.
As shown in the system configuration in FIG. 3, many Web systems include clustered Web servers. In FIG. 3, for example, the Web system uses L clustered Web servers, Web server 1 (304) to Web server L (305). Web servers are clustered mainly for the purpose of providing scalability that enables response to increase in load such as increase in the number of clients. Web servers can be clustered easily because Hypertext Transfer Protocol (abbreviated as HTTP below) used for client-Web server communications uses a stateless protocol. That HTTP is a stateless protocol means that a session can be newly established for every Web client-server communication, so the session can be assigned to any Web server in a cluster. Specifically, response to increase in load including increase in the number of users, for example, by adding rack-mount thin-types of servers one by one as necessary to enhance the system becomes possible.
In contrast to Web servers, since applications have state information, application servers do not work well even if servers (hardware) are clustered. The reason will be described using an example. Suppose an environment in which a plurality of application servers execute the same application for load balancing. Web systems generally perform processing through interaction with the users. Suppose book purchase processing at a Web site. The user first (1) retrieves the applicable database for a desired book list, (2) selects a desired book from the retrieved book list, (3) inputs his address for delivery of the book, and finally (4) makes arrangement for its settlement by his credit card or another applicable means. If this logical session including the purchase processes (1) to (4) is implemented as one application, the application involves a client-Web browser session employing the HTTP protocol (referred to as Web sessions below) in each phase of the purchase processes (1) to (4).
When there is only one application server, even if Web servers are clustered and accordingly there are a plurality of clustered Web servers, the application server can resume the processing by storing the final state of the applicable logical session for the processes (1) to (4) therein. JP-A-149449/1999, for example, has disclosed a method in which a database server gives a session ID to a session when it performs processing and stores the final state of the processing therein, transfers the applicable session ID to the client if the processing must be resumed, and on reception of a request containing the session ID from the client, it resumes the processing from the stored final state. The method retains the final state of processing by stopping a thread executing the session and continues the processing by resuming execution of the thread in response to the request. Even with this method, however, it is difficult to switch over to another server for resuming execution of the application. The reason is that, if each Web session of the purchase processes (1) to (4) is assigned to a different Web server and the request is transferred from the Web server to an application server other than the application server that has previously performed the processing, the database server cannot obtain the final state of the previously performed logical session, and accordingly cannot resume the logical session from the final state.
For database servers, generally, one database management system provides centralized management on all data to maintain consistency of the data. Therefore, it was difficult to improve the scalability by clustering them as with application servers. The document Oracle 9i Application Server Database Cache has disclosed a method for improving performance of application servers. The method caches data in a database server into a Web server in table units, and uses the cached data as necessary to avoid the database server from being accessed, thereby reducing load on the database server to improve scalability. On occurrence of a request for an update process, however, this method cannot perform the processing by using the cached data, which raises the necessity for the database server to perform the processing in the end, degrading the performance. In addition, since tables in database servers are generally of much greater size, use of comparatively inexpensive cluster servers, which are generally used for Web servers, often makes caching of data in table units impossible.
For large-scale Web systems, it has been difficult to provide scalability, raising a problem that they cannot respond to increase in the number of the users and abrupt increase in the system load.
In addition, due to the difficulty of providing scalability, Web systems must use expensive higher multiplexed SMP servers for their application servers and database servers, which create bottlenecks for processing, to provide adequate performance, making its implementation impossible.
It is accordingly an object of the present invention to improve system scalability, thereby providing Web systems that can easily provide adequate performance regardless of scale required.
A specific object of the present invention is to provide a method for enabling application servers to be clustered.
Another specific object of the present invention is to provide a cache with clustered databases (referred to as a cache database cluster below).
A further specific object of the present invention is to provide a method of structuring higher cost-performance Web systems by using a cluster system instead of using expensive higher multiplexed SMP servers.
Typical structures according to the present invention for attaining these objects will be described below.
First, the present invention provides a system in which the logical session state of an application is stored in a clustered cache database as necessary and the stored logical session state is read from the clustered cache database as requested. Using this system makes it possible for the processing of an application to be continued by another application that runs on an arbitrary server among clustered servers, thus making it possible to cluster application servers. The present invention creates a cache database cluster updatable on the clustered servers, thereby reducing load on the database servers. The present invention provides a system causing the cache database servers to synchronize with the database servers. Cache databases in the cache database clusters can also cache tables partially, thereby implementing optimized caching according to the amount of storage available in the caches. This system can reduce the number of accesses to the database servers for update processing, thereby making it possible to improve the scalability of the database servers.
In addition to the method of clustering application servers and the method of configuring cache database clusters, the present invention provides an automated cache database addition mechanism for the cache database clusters. Using this system makes it possible to configure higher-cost-performance and higher-scalability cluster systems easily.
Use of the present invention makes it possible to cluster application servers and configure updatable cache database clusters, thereby providing higher scalability of Web systems. In addition, the present invention makes it possible to configure Web systems by using lower-price cluster servers instead of using expensive higher multiplexed SMP servers, thereby improving cost-performance of the systems.